package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 订单信息对象 orders
 * 
 * @author ruoyi
 * @date 2025-04-08
 */
public class Orders extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private Long orderId;

    /** 用户ID */
    @Excel(name = "用户ID")
    private Long userId;

    /** 车辆ID */
    @Excel(name = "车辆ID")
    private Long vehicleId;

    /** 订单日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "订单日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date orderDate;

    /** 租赁价格 */
    @Excel(name = "租赁价格")
    private BigDecimal rentalPrice;

    /** 租赁时长 */
    @Excel(name = "租赁时长")
    private Long rentalDuration;

    /** 订单状态 */
    @Excel(name = "订单状态")
    private String orderStatus;

    /** 支付状态 */
    @Excel(name = "支付状态")
    private String paymentStatus;

    /** 支付方式 */
    @Excel(name = "支付方式")
    private String paymentMethod;

    /** 取车日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "取车日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date pickupDate;

    /** 还车日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "还车日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date returnDate;

    /** 订单总金额 */
    @Excel(name = "订单总金额")
    private BigDecimal totalAmount;

    /** 押金金额 */
    @Excel(name = "押金金额")
    private BigDecimal deposit;

    /** 折扣金额 */
    @Excel(name = "折扣金额")
    private BigDecimal discount;

    /** 订单创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "订单创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 订单更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "订单更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    public void setOrderId(Long orderId) 
    {
        this.orderId = orderId;
    }

    public Long getOrderId() 
    {
        return orderId;
    }

    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }

    public void setVehicleId(Long vehicleId) 
    {
        this.vehicleId = vehicleId;
    }

    public Long getVehicleId() 
    {
        return vehicleId;
    }

    public void setOrderDate(Date orderDate) 
    {
        this.orderDate = orderDate;
    }

    public Date getOrderDate() 
    {
        return orderDate;
    }

    public void setRentalPrice(BigDecimal rentalPrice) 
    {
        this.rentalPrice = rentalPrice;
    }

    public BigDecimal getRentalPrice() 
    {
        return rentalPrice;
    }

    public void setRentalDuration(Long rentalDuration) 
    {
        this.rentalDuration = rentalDuration;
    }

    public Long getRentalDuration() 
    {
        return rentalDuration;
    }

    public void setOrderStatus(String orderStatus) 
    {
        this.orderStatus = orderStatus;
    }

    public String getOrderStatus() 
    {
        return orderStatus;
    }

    public void setPaymentStatus(String paymentStatus) 
    {
        this.paymentStatus = paymentStatus;
    }

    public String getPaymentStatus() 
    {
        return paymentStatus;
    }

    public void setPaymentMethod(String paymentMethod) 
    {
        this.paymentMethod = paymentMethod;
    }

    public String getPaymentMethod() 
    {
        return paymentMethod;
    }

    public void setPickupDate(Date pickupDate) 
    {
        this.pickupDate = pickupDate;
    }

    public Date getPickupDate() 
    {
        return pickupDate;
    }

    public void setReturnDate(Date returnDate) 
    {
        this.returnDate = returnDate;
    }

    public Date getReturnDate() 
    {
        return returnDate;
    }

    public void setTotalAmount(BigDecimal totalAmount) 
    {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getTotalAmount() 
    {
        return totalAmount;
    }

    public void setDeposit(BigDecimal deposit) 
    {
        this.deposit = deposit;
    }

    public BigDecimal getDeposit() 
    {
        return deposit;
    }

    public void setDiscount(BigDecimal discount) 
    {
        this.discount = discount;
    }

    public BigDecimal getDiscount() 
    {
        return discount;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("orderId", getOrderId())
            .append("userId", getUserId())
            .append("vehicleId", getVehicleId())
            .append("orderDate", getOrderDate())
            .append("rentalPrice", getRentalPrice())
            .append("rentalDuration", getRentalDuration())
            .append("orderStatus", getOrderStatus())
            .append("paymentStatus", getPaymentStatus())
            .append("paymentMethod", getPaymentMethod())
            .append("pickupDate", getPickupDate())
            .append("returnDate", getReturnDate())
            .append("totalAmount", getTotalAmount())
            .append("deposit", getDeposit())
            .append("discount", getDiscount())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .toString();
    }
}
